const Service = require('egg').Service;
const Geetest = require('gt3-sdk');

class GeetestService extends Service {
    // 默认不需要提供构造函数。
    constructor(ctx) {
        super(ctx);
        //如果需要在构造函数做一些处理，一定要有这句话，才能保证后面 `this.ctx`的使用。
        // 就可以直接通过 this.ctx 获取 ctx 了
        // 还可以直接通过 this.app 获取 app 了
        this.geetest = new Geetest(this.app.config.geetest);
    }

    /**
     * 从Geetest获取验证码数据
     * @returns {Promise<any>}
     */
    async getGeetestData() {
        return new Promise(resolve => {
            this.geetest.register(null, (err, data) => {
                resolve(data);
            });
        });
    }

    /**
     * 验证Geetest
     * @returns {Promise<void>}
     */
    async checkGeetestData(data) {
        return new Promise(resolve => {
            this.geetest.validate(false, data, (err, success) => {
                resolve({error: err, success});
            });
        });
    }
}

module.exports = GeetestService;